package com.enjoyor.soa.traffic.api.ubms.service.dubbo;

import com.enjoyor.soa.traffic.api.ubms.dto.OffsiteInfoDto;
import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

/**
 * 维护非现场点位信息的Dubbo服务
 * @author yuankun
 * @version V1.0
 */
public interface DubboOffsiteInfoService {
	/**
	 * 返回所有的非现场点位信息
	 * @return ResultPojo 所有非现场点位信息
	 */
	public ResultPojo getOffsiteInfo();

	/**
	 * 返回所有的非现场点位信息
	 * @param offsiteId
	 * @param offsiteName
	 * @param regionId
	 * @param status
	 * @param manageDept
	 * @param directCode
	 * @param purposeCode
	 * @param offsiteIdDirect
	 * @param orderSeq
	 * @return ResultPojo 所有非现场点位信息
	 */
	public ResultPojo getOffsiteInfo(String offsiteId, String offsiteName, String regionId, String status, 
			String manageDept, String directCode, String purposeCode, String offsiteIdDirect, String orderSeq);
	
	/**
	 * 返回所有的非现场点位信息
	 * @param offsiteId
	 * @param offsiteName
	 * @param regionId
	 * @param status
	 * @param manageDept
	 * @param project
	 * @param company
	 * @param directCode
	 * @param purposeCode
	 * @param offsiteIdDirect
	 * @param orderSeq
	 * @return  ResultPojo 所有非现场点位信息
	 */
	public ResultPojo getOffsiteInfo(String offsiteId, String offsiteName, String regionId, String status,
			String manageDept,String project,String company, String directCode, String purposeCode, String offsiteIdDirect,String offsiteIdNoDirect,String orderSeq);

	/**
	 * 返回所有的非现场点位信息
	 * @param offsiteId
	 * @param offsiteName
	 * @param regionId
	 * @param status
	 * @param manageDept
	 * @param project
	 * @param company
	 * @param directCode
	 * @param purposeCode
	 * @param offsiteIdDirect
	 * @param ip
	 * @param orderSeq
	 * @return  ResultPojo 所有非现场点位信息
	 */
	public ResultPojo getOffsiteInfo(String offsiteId, String offsiteName, String regionId, String status,
									 String manageDept,String project,String company, String directCode, String purposeCode,
									 String offsiteIdDirect,String offsiteIdNoDirect,String ip,String orderSeq);

	public ResultPojo getOffsiteInfo(String offsiteId, String offsiteName, String regionId, String status,
									 String manageDept,String project,String company, String directCode, String purposeCode,
									 String offsiteIdDirect,String offsiteIdNoDirect,String ip,String sceneCode,String orderSeq);

	/**
	 * 返回某区域下所有的非现场点位信息
	 * @return ResultPojo 所有非现场点位信息
	 */
	public ResultPojo getOffsiteInfoByRegionId(String regionId);
	
	/**
	 * 返回指定建设项目下的所有的非现场点位信息
	 * @return ResultPojo 所有非现场点位信息
	 */
	public ResultPojo getOffsiteInfoByProject(String project);
	
	/**
	 * 返回指定建设单位下的所有的非现场点位信息
	 * @return ResultPojo 所有非现场点位信息
	 */
	public ResultPojo getOffsiteInfoByCompany(String company);
	
	/**
	 * 返回指定管理部门下的所有的非现场点位信息
	 * @return ResultPojo 所有非现场点位信息
	 */
	public ResultPojo getOffsiteInfoByManageDept(String manageDept);

	/**
	 * 返回指ip下的所有的非现场点位信息
	 * @return ResultPojo 所有非现场点位信息
	 */
	public ResultPojo getOffsiteInfoByIp(String ip);
	
	/**
	 * 根据点位状态返回所有的非现场点位信息
	 * @return ResultPojo 所有非现场点位信息
	 */
	public ResultPojo getOffsiteInfoByStatus(String status);
	
	/**
	 * 分页返回所有的非现场点位信息
	 * @param page 分页对象
	 * @return ResultPojo 包含非现场点位信息分页对象
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getPageOffisteInfo(Page page);

	/**
	 * 返回指定编码的非现场点位信息
	 * @param offsiteId 非现场点位编码
	 * @return ResultPojo 非现场点位信息
	 */
	public ResultPojo getOffsiteInfoById(String offsiteId);

	/**
	 * 按名称匹配并返回非现场点位信息
	 * @param offsiteName 非现场点位名称
	 * @return ResultPojo 非现场点位信息
	 */
	public ResultPojo getOffsiteInfoByName(String offsiteName);
	
	/**
	 * 返回与前缀相匹配的最大非现场点位编码值，用于手工生成新的点位编码
	 * @param prefixOffsiteId 非现场点位编码前缀
	 * @return String 与前缀相匹配的最大非现场点位编码值
	 */
	public String getMaxOffsiteId(String prefixOffsiteId);

	/**
	 * 添加一条非现场点位信息
	 * @param token 以逗号分隔的输入信息，如用户名等
	 * @param offsiteInfoDto 非现场点位信息
	 * @return ResultPojo 添加结果
	 */
	public ResultPojo addOffsiteInfo(String token, OffsiteInfoDto offsiteInfoDto);
	
	
	/**
	 * 批量添加一条非现场点位信息
	 * @param token 以逗号分隔的输入信息，如用户名等
	 * @param offsiteInfoDtos string格式的list
	 * @return ResultPojo 添加结果
	 */
	public ResultPojo addMultiOffsiteInfo(String token, String offsiteInfoDtos);

	/**
	 * 修改一条非现场点位信息
	 * @param token 以逗号分隔的输入信息，如用户名等
	 * @param offsiteInfoDto 非现场点位信息
	 * @return ResultPojo 修改结果
	 */
	public ResultPojo editOffsiteInfo(String token, OffsiteInfoDto offsiteInfoDto);

	/**
	 * 删除指定编码的非现场点位信息
	 * @param token 以逗号分隔的输入信息，如用户名等
	 * @param offsiteId 非现场点位编码
	 * @return ResultPojo 删除结果
	 */
	public ResultPojo removeOffsiteInfo(String token, String offsiteId);

	/**
	 * 返回指定编码的非现场点位信息
	 * @param offsiteId 非现场点位编码
	 * @param offsiteName 非现场点位名称
	 * @return ResultPojo 非现场点位信息
	 */
	public ResultPojo getOffsiteInfo(String offsiteId, String offsiteName, String orderSeq);

	/**
	 * 返回指定编码的非现场点位分页信息
	 * @param page
	 * @param offsiteId
	 * @param offsiteName
	 * @param regionId
	 * @param status
	 * @param manageDept
	 * @param directCode
	 * @param purposeCode
	 * @param offsiteIdDirect
	 * @param orderSeq
	 * @return ResultPojo 非现场点位信息
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getPageOffsiteInfo(Page page, String offsiteId, String offsiteName, String regionId, String status, String manageDept, 
			String directCode, String purposeCode, String offsiteIdDirect, String orderSeq);
	
	/**
	 * 返回指定编码的非现场点位分页信息
	 * @param page
	 * @param offsiteId
	 * @param offsiteName
	 * @param regionId
	 * @param status
	 * @param manageDept
	 * @param project
	 * @param company
	 * @param directCode
	 * @param purposeCode
	 * @param offsiteIdDirect
	 * @param orderSeq
	 * @return ResultPojo 非现场点位信息
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getPageOffsiteInfo(Page page, String offsiteId, String offsiteName, String regionId, String status, String manageDept, 
			String project,String company,String directCode, String purposeCode, String offsiteIdDirect,String offsiteIdNoDirect, String orderSeq);

	/**
	 * 返回指定编码的非现场点位分页信息
	 * @param page
	 * @param offsiteId
	 * @param offsiteName
	 * @param regionId
	 * @param status
	 * @param manageDept
	 * @param project
	 * @param company
	 * @param directCode
	 * @param purposeCode
	 * @param offsiteIdDirect
	 * @param ip
	 * @param orderSeq
	 * @return ResultPojo 非现场点位信息
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getPageOffsiteInfo(Page page, String offsiteId, String offsiteName, String regionId, String status, String manageDept,
										 String project,String company,String directCode, String purposeCode, String offsiteIdDirect,
										 String offsiteIdNoDirect, String ip,String orderSeq);
	/**
	 * 返回指定编码的非现场点位分页信息
	 * @param page 分页参数
	 * @param offsiteId 点位编号
	 * @param offsiteName 点位名称
	 * @param regionId 区域编号
	 * @param status 点位状态
	 * @param manageDept 所属部门
	 * @param directCode 点位方向
	 * @param purposeCodes 点位用途
	 * @param orderSeq
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getPageOffsiteInfo(Page page, String offsiteId, String offsiteName, String regionId, String status, String manageDept, 
			String directCode, String purposeCodes, String orderSeq);
	
	/**
	 * 返回指定编码的非现场点位列表
	 * @param offsiteId
	 * @param offsiteName
	 * @param regionId
	 * @param status
	 * @param manageDept
	 * @param directCode
	 * @param purposeCodes
	 * @param orderSeq
	 * @return
	 */
	public ResultPojo listOffsiteInfo(String offsiteId, String offsiteName, String regionId, String status, String manageDept, String directCode, String purposeCodes, String orderSeq);

	@SuppressWarnings("rawtypes")
	public ResultPojo getPageEasyUiOffsiteInfo(Page page, String offsiteId, String offsiteName, String regionId,
			String status, String manageDept, String directCode, String purposeCode, String offsiteIdDirect,
			String offsiteIdNoDirect, String orderSeq);
	@SuppressWarnings("rawtypes")
	public ResultPojo getPageEasyUiOffsiteInfo(Page page, String offsiteId, String offsiteName, String regionId,
			String status, String manageDept,String project,String company, String directCode, String purposeCode, String offsiteIdDirect,
			String offsiteIdNoDirect, String orderSeq);
	@SuppressWarnings("rawtypes")
	public ResultPojo getPageEasyUiOffsiteInfo(Page page, String offsiteId, String offsiteName, String regionId,
			String status, String manageDept,String project,String company,
			String directCode, String purposeCode, String offsiteIdDirect,
			String offsiteIdNoDirect, String ip,String orderSeq);

	public ResultPojo getOffsiteInfoTreebyRegion(String topId,String regionId,String sceneCode);
	
}